/**
 * Copyright 2015 Software innovation and R & D center. All rights reserved.
 * File Name: jdbcTool.java
 * Encoding UTF-8
 * Version: 0.0.1
 * History:	2017年1月12日
 */
package TOOL;


import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import org.omg.CORBA.PRIVATE_MEMBER;

/**
 *   ThreadLocal 线程局部变量 
 * @author: qun.xie
 * @version Revision: 0.0.1
 * @Date: 2017年1月12日
 */
public class jdbcTool {
	  private static String url;
	    private static String user ;
	    private static String password;

	  /**
     * 静态代码块，初始化变量
     */
	static{
		try {
		//获得properties配置文件
            InputStream is = jdbcTool.class.getClassLoader().getResourceAsStream("jdbcInfo.properties");
		//打印输出properties文件流
		System.out.println("类反射，加载properties文件"+is);
		//解析
		Properties properties = new Properties();
			properties.load(is);
		//获取配置信息
			String driver = properties.getProperty("driver");   //mysql驱动类
			url = properties.getProperty("url");   //数据库服务器的位置，端口号，以及所使用的数据库
			user = properties.getProperty("user");
			password = properties.getProperty("password");
		    /*String driver = "com.mysql.jdbc.Driver";   //mysql驱动类
            url ="jdbc:mysql://localhost:3306/student";   //数据库服务器的位置，端口号，以及所使用的数据库
            user = "root";
            password = "Mysql";
            */
			/**1、注册驱动 */
			Class.forName(driver);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	//给当前线程绑定链接
	private static ThreadLocal<Connection> local = new ThreadLocal<Connection>();

    public static Connection getConnection() throws SQLException{
    	//从当前线程中获得已经绑定的链接
    	Connection conn = local.get();
    	if (conn == null) {
    		//第一次获得绑定内容   --创建
    		conn = DriverManager.getConnection(url,user,password);
    		//将链接保存到ThreadLocal
			local.set(conn);
		}
    	/**2、 获得连接*/
    	
    	return conn;
    }
    /**3、关闭资源 */
    public static void close(Connection conn,PreparedStatement psmt,ResultSet rs){
    	try {
            if (rs != null) {
                rs.close();
            }

        } catch (Exception e) {
            throw new RuntimeException();
        }finally{
            try {
            if (psmt != null) {
            	psmt.close();  
            }

        } catch (Exception e) {
            throw new RuntimeException();
        }finally{
            try {
                if (conn != null) {
                    conn.close();
                }

            } catch (Exception e) {
                throw new RuntimeException();
            }
            }
        }

    }
}
